import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import cesium from 'vite-plugin-cesium'
import path from 'path'
import compression from 'vite-plugin-compression'

// https://vitejs.dev/config/
export default defineConfig({
  publicPath: process.env.VUE_APP_PUBLIC_PATH,
  plugins: [
    vue(),
    cesium(), // 配置 Cesium 插件
    // 启用gzip压缩
    compression({
      // 压缩文件格式
      algorithm: 'gzip',
      // 只压缩大于1kb的文件
      threshold: 1024,
      // 对于已压缩的文件不进行二次压缩
      filter: /\.(js|css|html|svg)$/,
      // 删除源文件，只保留压缩后的文件
      deleteOriginFile: false
    }),
  ],
  resolve: {
    alias: {
      '@': path.resolve(__dirname, './src'), // 设置别名
      // 'cesium': path.resolve(__dirname, './node_modules/cesium/Source') // Cesium别名
    }
  },
  css: {
    preprocessorOptions: {
      scss: {
        // 配置 Element Plus 主题
        additionalData: `@use "@/styles/element/index.scss" as *;`
      }
    }
  },
  server: {
    port: 3000,
    // 允许外部访问
    host: '0.0.0.0',
    open: false,
    // 允许跨域（可选）
    disableHostCheck: true,
    proxy: {
      // 代理 Cesium Ion 地形服务
      '/cesium-ion': {
        target: 'https://assets.ion.cesium.com',
        changeOrigin: true,
        rewrite: (path) => path.replace(/^\/cesium-ion/, ''),
        // 增加超时设置，避免地形数据加载超时
        timeout: 60000
      }
    }
  },
  build: {
    outDir: 'dist', // 输出目录
    assetsDir: 'assets', // 静态资源目录
  },
  // 优化依赖预构建,2025年8月27日10:47:15，因为这个本地启动
  //Uncaught SyntaxError: The requested module '/node_modules/mersenne-twister/src/mersenne-twister.js?v=f3132537' does not provide an export named 'default'
  // optimizeDeps: {
  //   exclude: ['cesium'] // 不预构建Cesium，避免打包问题
  // }
})
